#include "cpu/exec/template-start.h"
#define instr cmp
static void do_execute(){
 DATA_TYPE result = op_dest->val - op_src->val;
 update_eflags_pf_zf_sf((DATA_TYPE_S)result);
 cpu.eflags.CF = result > op_dest->val;
 cpu.eflags.OF = MSB((op_dest->val ^ op_src->val) & (op_dest->val 
^result));
// 对于加法，如果两个正数相加得到负数，或者两个负数相加得到正数，则发生了溢出。
// 对于减法，如果减数大于被减数（且两者同号），或者减数小于被减数（且两者异号但结果符号与被减数相反），则发生了溢出。
 print_asm_template2();
}
#if DATA_BYTE == 2 || DATA_BYTE == 4
make_instr_helper(si2rm)
#endif
make_instr_helper(i2a)
make_instr_helper(i2rm)
make_instr_helper(r2rm)
make_instr_helper(rm2r)
#include "cpu/exec/template-end.h"